﻿using System;
using System.Collections;
using System.Linq;
using System.Text;

namespace GIFT
{
    public class ComandoBusqueda : Comando
    {
        //Constructor de la clase
        public ComandoBusqueda(String nombre, String descripcion, String fechaActualizacion)
            : base(nombre,descripcion,fechaActualizacion)
        {
            setTipo("busqueda");
            FiltrosDeBusqueda = new ArrayList();
        }

        //Constructor de la clase
        public ComandoBusqueda(String nombre, String descripcion, String fechaActualizacion, String id, String idformulario)
            : base(nombre, descripcion, fechaActualizacion,id,idformulario,"busqueda")
        {
            FiltrosDeBusqueda = new ArrayList();
        }

        //Llena la lista de filtros de busqueda de la clase
        public void setListaFiltros(ArrayList filtrosdebusqueda)
        {
            for (int i = 0; i < filtrosdebusqueda.Count; ++i)
            {
                FiltrosDeBusqueda.Add(filtrosdebusqueda[i]);
            }
        }

        //Limpia la lista de filtros de busqueda de la clase
        public void limpiarListaFiltros()
        {
            FiltrosDeBusqueda.Clear();
        }

        //Agrega un filtro de busqueda a la lista de filtros de busqueda
        public void agregarFiltro(FiltroBusqueda filtro)
        {
            FiltrosDeBusqueda.Add(filtro);
        }

        //Elimina un filtro de busqueda de la lista de filtros de busqueda
        public void quitarFiltro(String componenteFiltro)
        {
            for (int i = 0; i < FiltrosDeBusqueda.Count; ++i)
            {
                if (new ControlFormulario().obtieneAtributoEspecificoTabla("componente_formulario", "nombre", "id", ((FiltroBusqueda)FiltrosDeBusqueda[i]).getIdTipoCampo()) == componenteFiltro)
                {
                    FiltrosDeBusqueda.Remove(FiltrosDeBusqueda[i]);
                }
            }
        }


        //Retorna la lista de filtros de busqueda
        public ArrayList getFiltros()
        {
            return FiltrosDeBusqueda;
        }

        //Retorna el filtro el cual relaciona el componente que llega por parametro
        public FiltroBusqueda buscarFiltroComponente(String nombreComponente)
        {
            FiltroBusqueda filtro = null;
            for (int i = 0; i < FiltrosDeBusqueda.Count; ++i)
            {
                String idTipoCampo = ((FiltroBusqueda)FiltrosDeBusqueda[i]).getIdTipoCampo();
                String nombreComponenteFiltro = new ControlFormulario().obtieneAtributoEspecificoTabla("componente_formulario", "nombre", "id", idTipoCampo);
                if (nombreComponenteFiltro == nombreComponente)
                {
                    filtro = (FiltroBusqueda)FiltrosDeBusqueda[i];
                }
            }
            return filtro;
        }

        //Variables globales
        private ArrayList FiltrosDeBusqueda;


    }//fin de la clase
}
